package com.atguigu.jxc.service;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.*;

import java.util.List;
import java.util.Map;

public interface GoodsService {


    ServiceVO getCode();


    /*
    *分页查询商品库存信息
     */
    Map<String, Object> GoodsInventory(Integer page, Integer rows, String codeOrName, Integer goodsTypeId);

    /**
     * 分页查询供应商
     * @param page
     * @param rows
     * @param supplierName
     * @return
     */
    Map<String, Object> supplierList(Integer page, Integer rows, String supplierName);

    /**
     * 添加或修改供应商
     * @param supplier
     * @return
     */
    ServiceVO supplierSaveAndUpdate(Supplier supplier);


    /**
     * 删除供应商
     * @param ids
     * @return
     */
    ServiceVO supplierDelete(String ids);

    /**
     * 分页查询客户信息
     * @param page
     * @param rows
     * @param customerName
     * @return
     */
    Map<String, Object> customerList(Integer page, Integer rows, String customerName);

    /**
     * 添加或修改客户信息
     * @param customer
     * @return
     */
    ServiceVO customerSaveAndUpdate(Customer customer);

    /**
     * 删除客户信息
     * @param ids
     * @return
     */
    ServiceVO customerDelete(String ids);




    /**
     * 查询所有商品单位
     * @return
     */
    Map<String, Object> listUnit();


    /**
     * 查询所有商品信息
     * @param page
     * @param rows
     * @param goodsName
     * @param goodsTypeId
     * @return
     */
    Map<String, Object> selectAllGoodsMsg(Integer page, Integer rows, String goodsName, Integer goodsTypeId);


    /**
     * 新增分类
     * @param goodsTypeName
     * @param pId
     * @return
     */
    ServiceVO saveGoodsType(String goodsTypeName, Integer pId);

    /**
     * 新增商品
     * @param goods
     * @return
     */
    ServiceVO saveGoodsMsg(Goods goods);

    /**
     * 查询结点
     * @param parentId
     * @return
     */
    List<GoodsType> findByParentId(Integer parentId);


    /**
     * 删除分类
     * @param goodsTypeId
     * @return
     */
    ServiceVO deleteGoodsType(Integer goodsTypeId);

    /**
     * 删除商品信息
     * @param goodsId
     * @return
     */
    ServiceVO deleteGoodsMsg(Integer goodsId);

    /**
     * 分页查询无库存商品信息
     * @param page 当前页
     * @param rows 每页显示条数
     * @param nameOrCode 商品名称或商品编码
     * @return
     */
    Map<String, Object> selectNullRepertory(Integer page, Integer rows, String nameOrCode);


    /**
     * 分页查询库存商品信息
     * @param page 当前页
     * @param rows 每页显示条数
     * @param nameOrCode 商品名称或商品编码
     * @return
     */
    Map<String, Object> selectRepertory(Integer page, Integer rows, String nameOrCode);


    /**
     * 添加商品期初库存
     * @param goodsId 商品ID
     * @param inventoryQuantity 库存
     * @param purchasingPrice 成本价
     * @return
     */
    ServiceVO addGoodsRepertory(Integer goodsId, Integer inventoryQuantity, double purchasingPrice);

    /**
     * 删除库存
     * @param goodsId
     * @return
     */
    ServiceVO deleteGoodsRepertory(Integer goodsId);

    /**
     * 新增报损单
     * @param damageList
     * @param damageListGoodsStr
     * @return
     */
    ServiceVO saveDamageList(DamageList damageList, String damageListGoodsStr);

    /**
     * 新增报溢单
     * @param overflowList
     * @param overflowListGoodsStr
     * @return
     */
    ServiceVO saveOverflowListGoods(OverflowList overflowList, String overflowListGoodsStr);

    /**
     * 查询库存报警
     * @return
     */
    Map<String, Object> selectListAlarm();

    /**
     * 报损单查询
     * @param sTime
     * @param eTime
     * @return
     */
    Map<String,Object> selectDamageListGoods(String sTime, String eTime);

    Map<String, Object> selectOverflowListGoods(String sTime, String eTime);

    Map<String, Object> selectDamageListGoodsList(Integer damageListId);

    Map<String, Object> selectOverflowListGoodsList(Integer overflowListId);
}
